#include<cstdio>
#include<iostream>
#include<cstring>
const int maxn=1100;
double f[maxn][31][31],p[maxn][31];
int m,n,t;
double dp()
{
	memset(f,0,sizeof(f));
	for(int i=1;i<=t;i++)
	{
		f[i][0][0]=1;
		for(int j=1;j<=m;j++)
			for(int k=0;k<=j;k++)
			{
				f[i][j][k]=f[i][j-1][k]*(1-p[i][j]);
				if(k!=0)f[i][j][k]+=f[i][j-1][k-1]*p[i][j];
			}
	}
	double temp1,temp;
	temp=1;
	for(int i=1;i<=t;i++)
	{
		temp1=0;
		for(int j=1;j<=m;j++)
			temp1+=f[i][m][j];
		temp*=temp1;
	}
	double ans=temp;
	temp=1;
	for(int i=1;i<=t;i++)
	{
		temp1=0;
		for(int j=1;j<n;j++)
			temp1+=f[i][m][j];
		temp*=temp1;
	}
	return ans-temp;


}
int main()
{
	while(scanf("%d%d%d",&m,&t,&n)&&n)
	{
		for(int i=1;i<=t;i++)
			for(int j=1;j<=m;j++)
				scanf("%lf",&p[i][j]);
		printf("%0.3lf\n",dp());
	}
	return 0;
}
